package com.zenithmind.mall.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zenithmind.common.result.PageResult;
import com.zenithmind.mall.pojo.dto.CouponDTO;
import com.zenithmind.mall.pojo.entity.Coupon;
import com.zenithmind.mall.pojo.query.CouponQuery;
import com.zenithmind.mall.pojo.vo.CouponVO;

import java.util.List;

/**
 * 优惠券管理服务接口 - 遵循接口隔离原则，专门负责优惠券的管理操作
 * 
 * @author ZenithMind Team
 * @since 2025-07-03
 */
public interface CouponManagementService extends IService<Coupon> {

    /**
     * 分页查询优惠券
     * 
     * @param query 查询条件
     * @return 分页结果
     */
    PageResult<CouponVO> getCouponPage(CouponQuery query);

    /**
     * 根据ID获取优惠券详情
     * 
     * @param id 优惠券ID
     * @return 优惠券详情
     */
    CouponVO getCouponById(String id);

    /**
     * 创建优惠券
     * 
     * @param couponDTO 优惠券DTO
     * @return 优惠券ID
     */
    String createCoupon(CouponDTO couponDTO);

    /**
     * 更新优惠券
     * 
     * @param id 优惠券ID
     * @param couponDTO 优惠券DTO
     * @return 是否成功
     */
    Boolean updateCoupon(String id, CouponDTO couponDTO);

    /**
     * 删除优惠券
     * 
     * @param id 优惠券ID
     * @return 是否成功
     */
    Boolean deleteCoupon(String id);

    /**
     * 批量删除优惠券
     * 
     * @param ids 优惠券ID列表
     * @return 是否成功
     */
    Boolean deleteCouponsBatch(List<String> ids);

    /**
     * 启用/禁用优惠券
     * 
     * @param id 优惠券ID
     * @param status 状态
     * @return 是否成功
     */
    Boolean updateCouponStatus(String id, Integer status);

    /**
     * 获取热门优惠券
     * 
     * @param limit 限制数量
     * @return 热门优惠券列表
     */
    List<CouponVO> getHotCoupons(Integer limit);
}
